package com.ttbj.driver.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ttbj.api.dto.Page;
import com.ttbj.driver.bean.po.Driver;


public interface DriverMapper {
	
	/**
	 * 通过司机id查询长途司机部分信息，用于预订单中显示
	 * @param driverId 司机id
	 * @return
	 */
	Driver queryDriverInfoById(@Param("driverId") Long driverId);
	
	/**
	 * 分页查询所属公司下所有长途的司机
	 * @param page 分页
	 * @param driver 司机信息
	 * @param companyNum 公司编号
	 * @return
	 */
	List<Driver> queryDriverInfoByPage(@Param("page") Page page, @Param("d") Driver driver, @Param("companyNum") String companyNum);
	
	/**
	 * 分页查询所属公司下所有长途司机的数量
	 * @param driver 司机信息
	 * @param companyNum 公司编号
	 * @return
	 */
	Integer queryDriverInfoByPageCount(@Param("d") Driver driver, @Param("companyNum") String companyNum);
	
	/**
	 * 增加长途司机信息
	 * @param driver 司机信息
	 * @return 返回行数
	 */
	int insertDriverInfo(Driver driver);
	
	/**
	 * 通过司机用户名查询在已通过审核的信息中是否存在
	 * @param driverName 司机用户名
	 * @param driverToExamine 是否通过审核 
	 * @return int
	 */
	int queryDriverInfoExist(@Param("driverName") String driverName, @Param("examine") Integer driverToExamine);
	
	/**
	 * 通过长途司机用户名查询司机编号
	 * @param driverName 用户名
	 * @return 司机编号
	 */
	String queryDriverNumByName(@Param("driverName") String driverName);
	
	/**
	 * 通过司机的id查询审核需要用到的信息
	 * @param driverId
	 * @return
	 */
	Driver queryDriverDetailsById(@Param("driverId") Long driverId);
	
	/**
	 * 通过短运司机id更新审核状态
	 * @param driverToExamine 审核状态
	 * @param driverId 短运司机id
	 * @return
	 */
	int updateDriverToExamine(@Param("driverToExamine") int driverToExamine, @Param("driverId") Long driverId);
	
	/**
	 * 更改短运司机是否被禁用
	 * @param isDelete 是否被删除：0未禁用，1已禁用
	 * @param driverNum 短运司机编号
	 * @return
	 */
	int updateDriverDisable(@Param("isDelete") Integer isDelete, @Param("driverNum") String driverNum);
	
	/**
	 * 更新短运司机账户信息（易通金服）
	 * @param driver 短运司机信息
	 * @return
	 */
	int updateShortDriverOpenAcc(Driver driver);
	
	/**
	 * 更新短运司机账户信息（易通金服）
	 * @param driver 短运司机的开户信息
	 * @return
	 */
	int updateDriverOpenAccInfo(Driver driver);
	
	/**
	 * 通过司机编号更新司机提现密码 
	 * @param driverWdPassword 司机提现密码
	 * @param driverNum 司机编号
	 * @return
	 */
	int updateDriverWdPasswordByNum(@Param("driverWdPassword") String driverWdPassword, @Param("driverNum") String driverNum);
	
	/**
	 * 通过司机编号更新司机提现密码
	 * @param driverNum 司机编号
	 * @return
	 */
	String queryDriverWdPasswordByNum(String driverNum);
	
	/**
	 * 查询所有未删除的司机的id和真实姓名
	 * @param isDel 是否删除：0：删除 1：未删除
	 * @return
	 */
	List<Driver> queryDriverIdAndRealName(Integer isDel); 
	
	/**
	 * 通过id更新司机真实姓名，测试使用
	 * @param driverRealName
	 * @param driverId
	 * @return
	 */
	int updateRealNameById(@Param("driverRealName") String driverRealName, @Param("driverId") Long driverId);
}
